<?php

namespace app\api\controller;

use app\common\controller\Api;

use fast\Random;
use think\Db;
/**
 * 示例接口
 */
class Demo extends Api
{

    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
    //如果接口已经设置无需登录,那也就无需鉴权了
    //
    // 无需登录的接口,*表示全部
    protected $noNeedLogin = ['test', 'test1', 'test3', 'test4'];
    // 无需鉴权的接口,*表示全部
    protected $noNeedRight = ['test2'];

    /**
     * 测试方法
     *
     * @ApiTitle    (测试名称)
     * @ApiSummary  (测试描述信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/demo/test/id/{id}/name/{name})
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="integer", required=true, description="会员ID")
     * @ApiParams   (name="name", type="string", required=true, description="用户名")
     * @ApiParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   ({
         'code':'1',
         'msg':'返回成功'
        })
     */
    //http://ela.test/api/demo/test
    //不能更改，esmapp 测试登录用
    public function test()
    {
        $this->success('返回成功');
    }

    //http://ela.test/api/demo/test3
    public function test3()
    {
        $xml = $this->request->getInput();
//        $xml = "
//<eWMSMessage>
//	<WebService_ID>ERP</WebService_ID>
//	<EventID>SendPickUpData</EventID>
//	<PickUpDataList>
//		<PickUpDataInfo>
//			<POType>單別</POType>
//			<POId>單號</POId>
//			<PickUpTime>領料日期</PickUpTime>
//			<FactoryId>廠別代號</FactoryId>
//			<PickUpDetailDataList>
//				<PickUpDetailDataInfo>
//					<SerialId>序號</SerialId>
//					<SKU>品號</SKU>
//					<LotId>批號</LotId>
//					<CheckQty>驗收數量</CheckQty>
//					<Item_Common3>工單號</Item_Common3>
//				</PickUpDetailDataInfo>
//				<PickUpDetailDataInfo>
//					<SerialId>序號</SerialId>
//					<SKU>品號</SKU>
//					<LotId>批號</LotId>
//					<CheckQty>驗收數量</CheckQty>
//					<CheckQty>驗收數量</CheckQty>
//					<Item_Common3>工單號</Item_Common3>
//				</PickUpDetailDataInfo>
//			</PickUpDetailDataList>
//		</PickUpDataInfo>
//	</PickUpDataList>
//</eWMSMessage>		";
        $values = $this->xmlToArray($xml);

        $result = array(
            'ReportData' => array(
                'Result' => 'Y',
                'ResultMessage' => '成功！'
            )
        );

        $r = $this->arrayToXml($result);

        echo $r;
//        $this->success('返回成功', $values);
    }

    function xmlToArray($xml)
    {
        //禁止引用外部xml实体
        libxml_disable_entity_loader(true);
        $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
        return $values;
    }


    function arrayToXml($arr){
        $xml = "<eWMSMessage>";
        foreach ($arr as $key=>$val){
            if(is_array($val)){
                $xml.="<".$key.">".$this->arrayToXml($val)."</".$key.">";
            }else{
                $xml.="<".$key.">".$val."</".$key.">";
            }
        }
        $xml.="</eWMSMessage>";
        return $xml;
    }

    /**
     * 无需登录的接口
     *
     */
    //http://ela.test/api/demo/test1
    public function test1()
    {
        $this->success('返回成功');
    }

    /**
     * 需要登录的接口
     *
     */
    //http://ela.test/api/demo/test2?token=82ed7b26-6799-44e5-aeee-8435c828ed68
    public function test2()
    {
        $this->success('返回成功');
    }

    /**
     * 需要登录且需要验证有相应组的权限
     *
     */
    //http://ela.test/api/demo/test4?token=82ed7b26-6799-44e5-aeee-8435c828ed68
    public function test4()
    {

        phpinfo();
    }

}
